// Copyright (C) 1998-2008, Sumisho Computer Systems Corp. All Rights Reserved.

// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
// 
//     http://www.apache.org/licenses/LICENSE-2.0
// 
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

/**
 * @author Hitoshi Okada
 */

package com.curlap.orb.generator;

import com.curlap.orb.context.AbstractApplicationContext;
import com.curlap.orb.context.ApplicationContextFactory;
import com.curlap.orb.context.ApplicationContextException;

/**
 * ClassPropertyLoader
 */
public class ClassPropertyLoader {

    // get ClassProperty from ClassName
    public static ClassProperty getClassPropertyFromClassName(String name) throws GeneratorException
    {
        return new ClassProperty(name);
    }

    // get ClassProperty In ApplicationContext
    public static ClassProperty getClassPropertyInApplicationContext(String name) throws ApplicationContextException, GeneratorException
    {
        return new ClassProperty(
                ApplicationContextFactory.getInstance(null).getApplicationContext().getObjectType(name).getName(), name);
    }
    
    // get all ClassProperties In ApplicationContext
    public static ClassProperty[] getAllClassPropertiesInApplicationContext() throws ApplicationContextException, GeneratorException
    {
        AbstractApplicationContext context = ApplicationContextFactory.getInstance(null).getApplicationContext();
        String[] names = context.getObjectNames();
        ClassProperty[] classProperties = new ClassProperty[names.length];
        for (int i = 0; i < names.length; i++)
        {
            String name = names[i];
            classProperties[i] = new ClassProperty(context.getObjectType(name).getName(), name);
        }
        return classProperties;
    }
}
